/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package main.CandidateAnalysis;

import java.io.Serializable;
import main.CandidateAnalysis.UTEES_Candidate;

/**
 *
 * @author Isaac Osesina
 */
public class UTEES_Candidate_Stats extends UTEES_Candidate implements Serializable, Cloneable {

    UTEES_Candidate candidate;
    int TP, TN, FP;
    double precision, recall, specificity, FMeasure;;

    public UTEES_Candidate_Stats(UTEES_Candidate candidate) {
        this.candidate = candidate;
    }

    @Override
    public int getCandidateID() {
        return candidate.getCandidateID();
    }

    @Override
    public double getChar_VecEval() {
        return candidate.getChar_VecEval();
    }

    @Override
    public int getContextAmbiguity() {
        return candidate.getContextAmbiguity();
    }

    @Override
    public double getContextEval() {
        return candidate.getContextEval();
    }

    @Override
    public double getDepthIndex() {
        return candidate.getDepthIndex();
    }

    @Override
    public int getDocumentID() {
        return candidate.getDocumentID();
    }

    @Override
    public String getDocumentType() {
        return candidate.getDocumentType();
    }

    @Override
    public int getEndPos() {
        return candidate.getEndPos();
    }

    @Override
    public int getEndTagPos() {
        return candidate.getEndTagPos();
    }

    @Override
    public String getEntityName() {
        return candidate.getEntityName();
    }

    @Override
    public String getEntityValue() {
        return candidate.getEntityValue();
    }

    @Override
    public int getLCxtFragmentID() {
        return candidate.getLCxtFragmentID();
    }

    @Override
    public int getMatchGroupSize() {
        return candidate.getMatchGroupSize();
    }

    @Override
    public int getMinGroupAmbiguity() {
        return candidate.getMinGroupAmbiguity();
    }

    @Override
    public Object getMiscAttr() {
        return candidate.getMiscAttr();
    }

    @Override
    public String getNewLeft() {
        return candidate.getNewLeft();
    }

    @Override
    public String getNewRight() {
        return candidate.getNewRight();
    }

    @Override
    public String getPostType() {
        return candidate.getPostType();
    }

    @Override
    public String getPreType() {
        return candidate.getPreType();
    }

    @Override
    public int getRCxtFragmentID() {
        return candidate.getRCxtFragmentID();
    }

    @Override
    public double getScore() {
        return candidate.getScore();
    }

    @Override
    public int getStartPos() {
        return candidate.getStartPos();
    }

    @Override
    public int getStartTagPos() {
        return candidate.getStartTagPos();
    }

    @Override
    public double getToken() {
        return candidate.getToken();
    }

    @Override
    public double getTotalSupport() {
        return candidate.getTotalSupport();
    }

    @Override
    public UTEES_Candidate clone() {
        return super.clone();
    }

    @Override
    public boolean intersectsWith(UTEES_Candidate candidate) {
        return candidate.intersectsWith(candidate);
    }

    @Override
    public boolean isCorrect() {
        return candidate.isCorrect();
    }

    @Override
    public boolean isDeleted() {
        return candidate.isDeleted();
    }

    

    public int getFP() {
        return FP;
    }

    public void setFP(int FP) {
        this.FP = FP;
    }

    public int getTN() {
        return TN;
    }

    public void setTN(int TN) {
        this.TN = TN;
    }

    public int getTP() {
        return TP;
    }

    public void setTP(int TP) {
        this.TP = TP;
    }

    public double getPrecision() {
        return precision;
    }

    public double getSpecificity() {
        return specificity;
    }

    public void setSpecificity(double specificity) {
        this.specificity = specificity;
    }

    public void setPrecision(double precision) {
        this.precision = precision;
    }

    public double getRecall() {
        return recall;
    }

    public void setRecall(double recall) {
        this.recall = recall;
    }

    public double getFMeasure() {
        return FMeasure;
    }

    public void setFMeasure(double FMeasure) {
        this.FMeasure = FMeasure;
    }

    public UTEES_Candidate getCandidate() {
        return candidate;
    }

    @Override
    public String toString() {
        String str = String.format("%d|%d|%d|%s|%s|%s|%.5f|%s|%s|%.5f|%d|%d|%d|%.5f|%.5f|%.5f|%.5f", getCandidateID(), getLCxtFragmentID(), getRCxtFragmentID(),
                                       getDocumentType(), getEntityName(), getEntityValue(), getDepthIndex(), getNewLeft(),
                                       getNewRight(), getScore(), TP, TN, FP, precision, recall, specificity, FMeasure);
            return str;
    }

    
}
